package com.canaan.business.service.bill;

import java.util.List;
import com.canaan.business.domain.bill.TrayDetail;
import com.canaan.business.domain.vo.OutStockQueryVo;
import com.canaan.common.core.domain.AjaxResult;

/**
 * 托盘明细Service接口
 *
 * @author canaan
 * @date 2025-03-28
 */
public interface ITrayDetailService {
    /**
     * 查询托盘明细
     *
     * @param id 托盘明细主键
     * @return 托盘明细
     */
    TrayDetail selectTrayDetailById(Long id);

    /**
     * 查询托盘明细列表
     *
     * @param trayDetail 托盘明细
     * @return 托盘明细集合
     */
    List<TrayDetail> selectTrayDetailList(TrayDetail trayDetail);

    List<TrayDetail> selectTrayDetailsByOutStockQueryVo(OutStockQueryVo outStockQueryVo);
    /**
     * 新增托盘明细
     *
     * @param trayDetail 托盘明细
     * @return 结果
     */
    int insertTrayDetail(TrayDetail trayDetail);

    /**
     * 批量新增托盘明细
     *
     * @param trayDetailList 托盘明细列表
     * @return 结果
     */
    int batchInsertTrayDetail(List<TrayDetail> trayDetailList);

    /**
     * 修改托盘明细
     *
     * @param trayDetail 托盘明细
     * @return 结果
     */
    int updateTrayDetail(TrayDetail trayDetail);

    /**
     * 批量修改托盘明细
     *
     * @param trayDetailList 托盘明细列表
     * @return 结果
     */
    int batchUpdateTrayDetail(List<TrayDetail> trayDetailList);

    /**
     * 批量删除托盘明细
     *
     * @param ids 需要删除的托盘明细主键集合
     * @return 结果
     */
    int deleteTrayDetailByIds(Long[] ids);

    /**
     * 删除托盘明细信息
     *
     * @param id 托盘明细主键
     * @return 结果
     */
    int deleteTrayDetailById(Long id);

    /**
     * 根据托盘号删除明细数据
     * @param trayNo 托盘号
     * @return
     */
    int deleteTrayDetailByTrayNo(String trayNo);

    /**
     * 查询托盘明细
     *
     * @param trayDetail 托盘明细
     * @return 托盘明细集合
     */
    AjaxResult selectTrayDetails(TrayDetail trayDetail);

    /**
     * 解绑料架
     * @param vo
     * @return
     */
    AjaxResult unbindProductNo(TrayDetail vo);
}
